from random import sample
from .models import QuestionType,Question



def produce_paper(arg):
    '''
    {'question_type1':['问题类型ID','数量','分值'],
     'question_type2':['问题类型ID','数量','分值'],

    }
    
    '''
    
    info_dict = {}
    save_info_dict = {}
    for key,info in arg.items():
        if info[0] != '' and not key.startswith('csrf'):
            question_type = QuestionType.objects.get(
                                        pk = info[0])
            question_list = sample(
                    list(question_type.question_set.all()),
                    int(info[1]),
                    )
            question_list_pk = [question.id for question in question_list]
            save_info_dict[question_type.question_type] = question_list_pk
            info_dict[question_type.question_type]=question_list

    return info_dict

class ProducePaper():

	'''
	功能：随机生成试卷题目
	dict_arg:是"paper/"前交的request.POST字典
	
	例子：{'question_type1':['问题类型ID','数量','分值'],
     'question_type2':['问题类型ID','数量','分值'],}
	
	self.info_dict:随机生成试题信息字典，
		例子：
		{
		'单选题': [<Question: 所有少先队员都是学生，那么所有学生都是少先队 员，这个逻辑（   ）>, <Question: 我坐在小明的前面，小明的后面是小良 ，小良坐在最后一排，我坐在哪一排 (  )>, <Question: 萝卜比黄瓜便宜， 我的钱够买2公斤黄瓜。所以，(    ) >, <Question: 正方形是有角的图形，这个图形没有角，所以(    )小明的家在村东头，小红的家在村西头，小王家离小红家比小明家近，那么 (    )>, <Question: 10.当B大于C时，X小于C但C绝不会大于等于B。所以，（    ）>], 
		'填空题': [<Question: 方程｜x+55|＝7的解是_______.>, <Question: 你喜欢吃什么>, <Question: 2.在一所3000人的学校随机调查了100人，其中有55人上学之前吃早饭，在这所学校里随 便问一个人，上学之前吃过早餐的概率是__________;>, <Question: 3.将一 颗骰子（正方体）连掷两次，得到的点数都是9的概率是________;>, <Question: 已知方程3x+a=2的解是5，则a的值是________;>]
		}
	self.info_dict_pk():将info_dict的值转变成pk值
		例子：
		{'单选题': [25, 50, 52, 45, 51], 
		'填空题': [4, 24, 44, 39, 15]}
	'''

	def __init__(self,dict_arg):
		self.dict_arg = dict_arg
		self.info_dict = self.info_dict_obj()
	def info_dict_obj(self):
		info_dict = {}

		for key,info in self.dict_arg.items():
			if info[0] != '' and not key.startswith('csrf'):
				question_type = QuestionType.objects.get(
											pk = info[0])
				question_list = sample(
						list(question_type.question_set.all()),
						int(info[1]),
						)
	
				info_dict[question_type.question_type]=question_list
		
		return info_dict
		
	def info_dict_pk(self):
		info_dict_pk_now = {}
	
		for key,value in self.info_dict.items():
			info_dict_pk_now[key] = [i.id for i in self.info_dict[key]]
			
		return info_dict_pk_now
			
			
	







        
    
    
